#pragma once
#include <unordered_map>
#include <string>


//向前声明
class Node;
class Physics;

class Engine
{
private:
    std::unordered_map<std::string, Node*> _nodes;
    Physics *_physics=nullptr;

public:
    Engine(/* args */);
    /**
     * 增加一个节点到场景中
     */
    Node *addNode(std::string uuid);
    /**
     * 从场景中删除一个节点
     */
    void delNode(std::string uuid);
    /**
     * 获取一个节点
     */
    Node *getNode(std::string uuid);
    void cleanAllNode();
    /**
     * 初始化物理碰撞
     */
    void openPhysics();
    void closePhysics();

    void update(float dt);


    ~Engine();
};
